import gevent, time

# 无论是多进程启动的协程还是多线程启动的协程，都可以共享进程和线程之间的数据
message = None  # 保存公共数据 ，全局变量


def message_producer(author, book):  # 消息生产者
    global message
    for num in range(10):  # 循环数据生产
        message = f"《{book}》,📖图书作者：{author}"
        time.sleep(1)
        print(f"【生产者】{message}")  # 信息输出
        gevent.sleep(1)  # 协程切换的延迟


def message_consumer():  # 消息消费者
    while True:  # 持续循环♻️
        print(f'【消费者】{message}')
        gevent.sleep(1)


def main():
    producer_gevent = gevent.spawn(message_producer, '韩朵朵', 'Python开发实战')
    consumer_gevent = gevent.spawn(message_consumer)
    producer_gevent.join()  # 协程强制运行
    consumer_gevent.join()  # 协程强制运行


if __name__ == "__main__":
    main()
